home *** CD-ROM | disk | FTP | other *** search
-
-
-
- GETSOCKOPT C Library Procedures GETSOCKOPT
-
-
-
- NNAAMMEE
- getsockopt, setsockopt - get and set options on sockets
-
- SSYYNNOOPPSSIISS
- ##iinncclluuddee <<ssyyss//ttyyppeess..hh>>
- ##iinncclluuddee <<ssyyss//ssoocckkeett..hh>>
-
- ggeettssoocckkoopptt((ss,, lleevveell,, ooppttnnaammee,, ooppttvvaall,, ooppttlleenn))
- iinntt ss,, lleevveell,, ooppttnnaammee;;
- cchhaarr **ooppttvvaall;;
- iinntt **ooppttlleenn;;
-
- sseettssoocckkoopptt((ss,, lleevveell,, ooppttnnaammee,, ooppttvvaall,, ooppttlleenn))
- iinntt ss,, lleevveell,, ooppttnnaammee;;
- cchhaarr **ooppttvvaall;;
- iinntt ooppttlleenn;;
-
- DDEESSCCRRIIPPTTIIOONN
- _G_e_t_s_o_c_k_o_p_t and _s_e_t_s_o_c_k_o_p_t manipulate _o_p_t_i_o_n_s associated with
- a socket. Options may exist at multiple protocol levels;
- they are always present at the uppermost ``socket'' level.
-
- When manipulating socket options the level at which the
- option resides and the name of the option must be specified.
- To manipulate options at the ``socket'' level, _l_e_v_e_l is
- specified as SOL_SOCKET. To manipulate options at any other
- level the protocol number of the appropriate protocol con-
- trolling the option is supplied. For example, to indicate
- that an option is to be interpreted by the TCP protocol,
- _l_e_v_e_l should be set to the protocol number of TCP; see
- _g_e_t_p_r_o_t_o_e_n_t(3N).
-
- The parameters _o_p_t_v_a_l and _o_p_t_l_e_n are used to access option
- values for _s_e_t_s_o_c_k_o_p_t. For _g_e_t_s_o_c_k_o_p_t they identify a
- buffer in which the value for the requested option(s) are to
- be returned. For _g_e_t_s_o_c_k_o_p_t, _o_p_t_l_e_n is a value-result
- parameter, initially containing the size of the buffer
- pointed to by _o_p_t_v_a_l, and modified on return to indicate the
- actual size of the value returned. If no option value is to
- be supplied or returned, _o_p_t_v_a_l may be supplied as 0.
-
- _O_p_t_n_a_m_e and any specified options are passed uninterpreted
- to the appropriate protocol module for interpretation. The
- include file <_s_y_s/_s_o_c_k_e_t._h> contains definitions for
- ``socket'' level options, described below. Options at other
- protocol levels vary in format and name; consult the
- appropriate entries in section (4P).
-
- Most socket-level options take an _i_n_t parameter for _o_p_t_v_a_l.
- For _s_e_t_s_o_c_k_o_p_t, the parameter should non-zero to enable a
- boolean option, or zero if the option is to be disabled.
- SO_LINGER uses a _s_t_r_u_c_t _l_i_n_g_e_r parameter, defined in
-
-
-
- Sprite v1.0 May 23, 1986 1
-
-
-
-
-
-
- GETSOCKOPT C Library Procedures GETSOCKOPT
-
-
-
- <_s_y_s/_s_o_c_k_e_t._h>, which specifies the desired state of the
- option and the linger interval (see below).
-
- The following options are recognized at the socket level.
- Except as noted, each may be examined with _g_e_t_s_o_c_k_o_p_t and
- set with _s_e_t_s_o_c_k_o_p_t.
-
- SO_DEBUG toggle recording of debugging information
- SO_REUSEADDR toggle local address reuse
- SO_KEEPALIVE toggle keep connections alive
- SO_DONTROUTE toggle routing bypass for outgoing messages
- SO_LINGER linger on close if data present
- SO_BROADCAST toggle permission to transmit broadcast messages
- SO_OOBINLINE toggle reception of out-of-band data in band
- SO_SNDBUF set buffer size for output
- SO_RCVBUF set buffer size for input
- SO_TYPE get the type of the socket (get only)
- SO_ERROR get and clear error on the socket (get only)
-
- SO_DEBUG enables debugging in the underlying protocol
- modules. SO_REUSEADDR indicates that the rules used in
- validating addresses supplied in a _b_i_n_d(2) call should allow
- reuse of local addresses. SO_KEEPALIVE enables the periodic
- transmission of messages on a connected socket. Should the
- connected party fail to respond to these messages, the con-
- nection is considered broken and processes using the socket
- are notified via a SIGPIPE signal. SO_DONTROUTE indicates
- that outgoing messages should bypass the standard routing
- facilities. Instead, messages are directed to the appropri-
- ate network interface according to the network portion of
- the destination address.
-
- SO_LINGER controls the action taken when unsent messags are
- queued on socket and a _c_l_o_s_e(2) is performed. If the socket
- promises reliable delivery of data and SO_LINGER is set, the
- system will block the process on the _c_l_o_s_e attempt until it
- is able to transmit the data or until it decides it is
- unable to deliver the information (a timeout period, termed
- the linger interval, is specified in the _s_e_t_s_o_c_k_o_p_t call
- when SO_LINGER is requested). If SO_LINGER is disabled and a
- _c_l_o_s_e is issued, the system will process the close in a
- manner that allows the process to continue as quickly as
- possible.
-
- The option SO_BROADCAST requests permission to send broad-
- cast datagrams on the socket. Broadcast was a privileged
- operation in earlier versions of the system. With protocols
- that support out-of-band data, the SO_OOBINLINE option
- requests that out-of-band data be placed in the normal data
- input queue as received; it will then be accessible with
- _r_e_c_v or _r_e_a_d calls without the MSG_OOB flag. SO_SNDBUF and
- SO_RCVBUF are options to adjust the normal buffer sizes
-
-
-
- Sprite v1.0 May 23, 1986 2
-
-
-
-
-
-
- GETSOCKOPT C Library Procedures GETSOCKOPT
-
-
-
- allocated for output and input buffers, respectively. The
- buffer size may be increased for high-volume connections, or
- may be decreased to limit the possible backlog of incoming
- data. The system places an absolute limit on these values.
- Finally, SO_TYPE and SO_ERROR are options used only with
- _s_e_t_s_o_c_k_o_p_t. SO_TYPE returns the type of the socket, such as
- SOCK_STREAM; it is useful for servers that inherit sockets
- on startup. SO_ERROR returns any pending error on the
- socket and clears the error status. It may be used to check
- for asynchronous errors on connected datagram sockets or for
- other asynchronous errors.
-
- RREETTUURRNN VVAALLUUEE
- A 0 is returned if the call succeeds, -1 if it fails.
-
- EERRRROORRSS
- The call succeeds unless:
-
- [EBADF] The argument _s is not a valid descrip-
- tor.
-
- [ENOTSOCK] The argument _s is a file, not a socket.
-
- [ENOPROTOOPT] The option is unknown at the level indi-
- cated.
-
- [EFAULT] The address pointed to by _o_p_t_v_a_l is not
- in a valid part of the process address
- space. For _g_e_t_s_o_c_k_o_p_t, this error may
- also be returned if _o_p_t_l_e_n is not in a
- valid part of the process address space.
-
- SSEEEE AALLSSOO
- ioctl(2), socket(2), getprotoent(3N)
-
- BBUUGGSS
- Several of the socket options should be handled at lower
- levels of the system.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Sprite v1.0 May 23, 1986 3
-
-
-
-